<?php
/**
 * スターティングメンバー登録コンポーネントモジュール
 * HTTPリクエストの内容からスタメンデータファイルを更新する
 */
require_once APPLICATION_PATH . '/models/StartingMember/xml/StartingMemberXml.php';
require_once APPLICATION_PATH . '/models/HttpRequest/HttpRequestController.php';
require_once dirname(__FILE__) . '/HttpRequestRegist.php';
require_once dirname(__FILE__) . '/Controller.php';
/**
 * スタメン登録コンポーネントクラス
 * @link https://www.evernote.com/view/cc95420b-12f8-4d5e-9c84-9131bcc4960b?locale=ja#b=21d02133-6df1-478c-a3b3-a4c3170c0462&n=cc95420b-12f8-4d5e-9c84-9131bcc4960b
 */
class Components_StartingMember_Regist
{
	/** スターティングメンバーデータオブジェクト */
	protected $_objStartingMemberXml;
	/** HTTPリクエストオブジェクト */
	protected $_objRequest;

	/**
	 * コンストラクタ
	 */
	public function __construct()
	{
		$this->_objRequest = new Lib_Request();
		$sGameId = $this->_getGameId();
		$this->_objStartingMemberXml
		= new Models_StartingMember_Xml($sGameId);
		$this->_addStartingMemberFromRequest();
		$this->_objStartingMemberXml->saveToFile();
	}

	/**
	 * HTTPリクエストからゲーム識別を取得する
	 */
	protected function _getGameId()
	{
		$sGameId = $this->_objRequest->get(HttpRequest::GAME_ID);
		return $sGameId;
	}

	/**
	 * ＨＴＴＰリクエストでスタメンｄ－たせっとを更新する
	 * @return boolean
	 */
	protected function _addStartingMemberFromRequest()
	{
		$objRequestRegist = new Components_StartingMember_HttpRequestRegist();
		/***
		 * 同一選手の２重登録チェック
		 * ２重登録を検出した場合ＦＡＬＳＥを返す
		 */
		if ($objRequestRegist->DuplicatePlayerIdExist() == TRUE){
			return FALSE;
		}
		$this->_objStartingMemberXml->deleteAll();
		$i = 0;
		while ( $i < 11 ) {
			$ID = $objRequestRegist->getPlayerId($i);
			if ( empty($ID) ) {
				break;
			}
			$Name = $objRequestRegist->getPlayerName($i);
			$Age = $objRequestRegist->getGakunenId($i);
			$Position = $objRequestRegist->getPositionId($i);
			$this->_objStartingMemberXml->addPlayer($ID, $Name, $Age, $Position);

			$i ++;
		}
	}

	/**
	 * HTTPリクエストからスタメン情報を抽出する
	 * @param $SchoolType
	 * @return array スタメン情報
	 */
	public static function getPositionRequest()
	{
		/** @var $aryResultPosition スタメン情報返却 */
		$aryResultPosition = array();
		$i = 0;
		/***
		 * ポジション毎のパラメータ学年から各ポジションに選手ＩＤを設置
		*/
		while ($i < 11) {
			$aryResultPosition['P'.$i] = $_REQUEST[$_REQUEST['P'.$i]];
			$i ++;
		}
		return $aryResultPosition;
	}

	/**
	 * HTTPリクエストからページ戻りようスタメン情報を抽出する
	 * @return array スタメン情報
	 */
	public static function getPositonRequestForBack()
	{
		$aryResultPosition = array();

		$i = 1;
		/***
		 * ポジションメニュー抽出
		 */
		while ($i <  11 ) {
			$aryResultPosition['POS'.$i] = $_REQUEST['POS'.$i];
			$i ++;
		}

		$i = 0;
		/***
		 * ポジション毎の学年を抽出する
		 */
		while ( $i < 11 ) {
			$aryResultPosition['P'.$i] = $_REQUEST['P'.$i];
			$i ++;
		}

		$i = 0;
		/***
		 * ポジション毎の選手を抽出する
		 */
		while ( $i < 11 ) {
			$aryResultPosition[$_REQUEST['P'.$i]] = $_REQUEST[$_REQUEST['P'.$i]];
			$i ++;
		}


		return $aryResultPosition;
	}
}